Flask 学习 |
您所在的位置:网站首页 › flask连接数据库 数据表存在 › Flask 学习 |
前言 SQLAlchemy采用简单的Python语言,提供高效和高性能的数据库访问,实现了完整的企业级持久模型。SQLAlchemy 是目前python中最强大的 ORM框架, 功能全面。 Flask-SQLAlchemy 是一个为 Flask 应用插件,封装了SQLAlchemy,简化了操作,只需添加配置项就可以在Flask 项目中使用。 Flask-SQLAlchemy 环境准备Flask 使用版本v2.2.2 先安装连接 mysql 驱动包 pymysql pip install pymysql安装Flask-SQLAlchemy 应用插件 pip install flask-sqlalchemy相关版本 ![]() sqlalchemy 连接数据库,需要使用到一些配置信息,组合成满足以下条件的字符串: dialect+driver://username:password@host:port/database相关配置参数说明 配置参数 说明 dialect 数据库,如:sqlite、mysql、oracle等 driver 数据库驱动,如前面安装的:pymysql username 登录数据库用户名 password 登录数据库密码 host 数据库部署 IP 地址 port 端口 database 数据库库名 拼接地址示例 # 拼接配置dialect + driver://username:passwor@host:port/database DB_URI = 'mysql+pymysql://root:123456@localhost:3306/web'flask-sqlalchemy 的相关配置封装到了 flask 的配置项中, 可以通过app.config属性 或 配置加载方案 (如config.from_object) 进行设置 配置选项 说明 SQLALCHEMY_DATABASE_URI 连接数据库。示例:mysql://username:password@host/post/db? SQLALCHEMY_BINDS 一个将会绑定多种数据库的字典。 SQLALCHEMY_ECHO 记录打印SQL语句用于调试的, 一般设置为False, 不然会在控制台输出一大堆的东西 SQLALCHEMY_POOL_SIZE 数据库池的大小,默认值为5。 SQLALCHEMY_POOL_TIMEOUT 连接超时时间 SQLALCHEMY_POOL_RECYCLE 自动回收连接的秒数。 SQLALCHEMY_MAX_OVERFLOW 控制在连接池达到最大值后可以创建的连接数。当这些额外的 连接回收到连接池后将会被断开和抛弃。 SQLALCHEMY_TRACK_MODIFICATIONS 如果设置成 True (默认情况),Flask-SQLAlchemy 将会追踪对象的修改并且发送信号。这需要额外的内存, 如果不必要的可以禁用它。 使用示例添加配置 from flask import Flask, url_for, request, redirect, render_template app = Flask(__name__) # 设置数据库连接地址 DB_URI = 'mysql+pymysql://root:[email protected]:3306/web' app.config['SQLALCHEMY_DATABASE_URI'] = DB_URI # 是否追踪数据库修改,一般不开启, 会影响性能 app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False # 是否显示底层执行的SQL语句 app.config['SQLALCHEMY_ECHO'] = True初始化对象,关联到flask 项目, 有两种方式 方法一:直接在初始化的时候传app参数 # 初始化组件对象, 直接关联Flask应用 db = SQLAlchemy(app)方法二:使用db.init_app(app)方法 # 先实例化,后关联app db = SQLAlchemy() # 初始化db,关联flask 项目 db.app = app # 这一步需先设置属性,很多老的教程都缺少这一步,导致连不上数据库 db.init_app(app)查询示例,可以直接执行原生SQL语句,主要是检查下有没正确链接数据库,查询到结果 # 执行原生SQL语句, 测试下能不能查询到结果 sql = 'select * from parent' result = db.session.execute(sql) print(result.fetchall())查询结果 [(1, 'yy', 'yoyo'), (2, 'yy', 'yoyo'), (3, 'yy', 'yoyo')...] * Serving Flask app 'app.py' * Debug mode: on完整代码 from flask import Flask, url_for, request, redirect, render_template from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) # 设置数据库连接地址 DB_URI = 'mysql+pymysql://root:[email protected]:3306/web' app.config['SQLALCHEMY_DATABASE_URI'] = DB_URI # 是否追踪数据库修改,一般不开启, 会影响性能 app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False # 是否显示底层执行的SQL语句 app.config['SQLALCHEMY_ECHO'] = True # 初始化db,关联flask 项目 db = SQLAlchemy(app) # 执行原生SQL语句, 测试下能不能查询到结果 sql = 'select * from parent' result = db.session.execute(sql) print(result.fetchall()) if __name__ == '__main__': app.run()2022年第 12期《python接口web自动化+测试开发》课程,9月17号开学! 本期上课时间:2022年9月17号 - 2022年12月17号,周六周日上午9:00-11:00 报名费:报名费3000一人(周期3个月)联系微信/QQ:283340479 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |